#ifndef __OBJECT_VIEW_HPP__
#define __OBJECT_VIEW_HPP__

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include "m3g/m3g-fwd.hpp"

namespace m3g_viewer
{

/**
 * 
 */
class ObjectView : public Fl_Window
{
public:
    ObjectView (void* obj);
    virtual ~ObjectView ();

    void register_m3g_object_tabs             (m3g::Object* obj);
    void regsiter_m3g_Object3D_tab            (m3g::Object3D* obj3d);
    void register_m3g_AnimationController_tab (m3g::AnimationController* ctrl);
    void register_m3g_AnimationTrack_tab      (m3g::AnimationTrack* track);
    void register_m3g_Appearance_tab          (m3g::Appearance* app);
    void register_m3g_Background_tab          (m3g::Background* bg);
    void register_m3g_CompositingMode_tab     (m3g::CompositingMode* cmode);
    void register_m3g_Fog_tab                 (m3g::Fog* fog);
    void register_m3g_Image2D_tab             (m3g::Image2D* img);
    void register_m3g_IndexBuffer_tab         (m3g::IndexBuffer* ibuf);
    void register_m3g_TriangleStripArray_tab  (m3g::TriangleStripArray* tris);
    void register_m3g_KeyframeSequence_tab    (m3g::KeyframeSequence* kseq);
    void register_m3g_Material_tab            (m3g::Material* mat);
    void register_m3g_PolygonMode_tab         (m3g::PolygonMode* pmode);
    void register_m3g_Transformable_tab       (m3g::Transformable* tra);
    void register_m3g_Node_tab                (m3g::Node* node);
    void register_m3g_Camera_tab              (m3g::Camera* cam);
    void register_m3g_Group_tab               (m3g::Group* grp);
    void register_m3g_World_tab               (m3g::World* wld);
    void register_m3g_Light_tab               (m3g::Light* lgh);
    void register_m3g_Mesh_tab                (m3g::Mesh* msh);
    void register_m3g_MorpingMesh_tab         (m3g::MorphingMesh* msh);
    void register_m3g_SkinnedMesh_tab         (m3g::SkinnedMesh* msh);
    void register_m3g_Sprite3D_tab            (m3g::Sprite3D* spr);
    void register_m3g_Texture2D_tab           (m3g::Texture2D* tex);
    void regsiter_m3g_VertexArray_tab         (m3g::VertexArray* varry);
    void register_m3g_VertexBuffer            (m3g::VertexBuffer* vbuf);
};



} // namespace m3g_viewer


#endif

